package com.ycxy.sh.transaction.controller;


import com.ycxy.sh.transaction.dao.entity.*;
import com.ycxy.sh.transaction.service.*;
import com.ycxy.sh.transaction.service.impl.CommentReplyServiceImpl;
import com.ycxy.sh.transaction.util.KeyUtil;
import com.ycxy.sh.transaction.web.JsonResult;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 *  评论和回复控制器
 *
 * @author hlt
 * @since 2019-12-21
 */
@Slf4j
@Api(tags = "4.评论管理模块")
@Controller
public class CommentReplyController {
    @Autowired
    private CommentService commentService;
    @Autowired
    private CommentReplyService commentReplyService;

    /**
     * 查询商品下的评论和回复
     * */
    @ResponseBody
    @GetMapping("/comment/query/{commid}")
    public JsonResult queryCommentReply(@PathVariable("commid") Long commentid){
        List<Comment> commentList = commentReplyService.selectCommentReply(commentid);
        log.debug("查询评论回复成功");
        return JsonResult.ok(commentList);
    }

    /**
     * 评论
     * 1.前端传入：商品id（commodity_id）、商品发布者id（commodity_publish_user_id）、评论内容（comment_commentContent）
     * 2.session获取：评论者id（comment_user_id）
     * 3.过滤评论内容后，插入评论
     */
    @ResponseBody
    @PostMapping("/comment/insert")
    public JsonResult insertComment(@RequestBody Comment comment, HttpSession session) {
        commentService.insertComment(comment,session);
        log.debug("评论成功");
        return JsonResult.ok();
    }

    /**
     * 评论回复
     * 1.前端传入：商品id（commodity_id）、评论id（comment_id）、被回复用户id（comment_user_id）、商品发布者id（commodity_publish_user_id）、评论内容（comment_content）
     * 2.session获取：回复者id（reply_user_id）
     * 3.过滤评论回复内容后，插入评论回复
     */
    @ResponseBody
    @PostMapping("/reply/insert")
    public JsonResult insertreply(@RequestBody Reply reply, HttpSession session) {
        Long replyuserid = (Long) session.getAttribute("userid");
        commentReplyService.replyComment(reply,replyuserid);
        log.debug("回复评论成功");
        return JsonResult.ok();
    }

    /**
     * 根据评论者id和商品发布者id删除评论
     * 1.获取session中用户id信息
     * 2.对比用户id信息和评论者id信息：是否满足评论者本人或商品发布者
     * 3.删除评论及评论对应的回复
     */
    @ResponseBody
    @PostMapping("/comment/delete/{cid}")
    public JsonResult deleteComment(@PathVariable("cid") Long commentid, HttpSession session){
        Long commentuserid = (Long) session.getAttribute("userid");
        commentReplyService.deleteComment(commentid,commentuserid);
        log.debug("成功删除评论");
        return JsonResult.ok();
    }

    /**
     * 删除回复
     * 1.获取session中用户id信息
     * 2.对比用户id信息和回复者id信息：是否满足评论回复者本人或商品发布者
     * 3.进行删除操作
     */
    @ResponseBody
    @PostMapping("/reply/delete/{rid}")
    public JsonResult deleteReply(@PathVariable("rid") Long replyid, HttpSession session){
        Long replyuserid = (Long) session.getAttribute("userid");
        commentReplyService.deleteReply(replyid,replyuserid);
        log.debug("成功删除回复");
        return JsonResult.ok();
    }

}

